﻿using System.Collections;
using System.Collections.Generic;
using UnityEngine;

//游戏的入口内，负责处理与游戏最开始的少量逻辑（比如：播放公司logo）,初始化必要的对象
//在这里该类主要需要检查更新，如果需要的话，进行热更。之后的所有逻辑就交给热更的内容
//（如果有Lua的话，逻辑热更会更加灵活方便。这里没有lua,就通过热更prefab的方式来更新资源和少量逻辑）
using System.IO;

public class Main : MonoBehaviour 
{
	[SerializeField]
	private bool LoadFromBundle = false;
	private bool needUpdate = false;
	// Use this for initialization
	private void Start () {
		//不同平台下是否需要开启热更
//		这部分代码会影响缩进？？ waht funck!
		#if UNITY_EDITOR 
		needUpdate = true;
		#elif UNITY_ANDROID
		needUpdate = true;
		#elif UNITY_IOS
		needUpdate = true;
		#else
		needUpdate = true;
		#endif

		//为编辑器设置调试用的相关变量，这些设置只在编辑器模式下会起作用
		#if UNITY_EDITOR
		//为了方便调试，在编辑器下将bundle的生成目录作为加载目录,这里根据项目实际需求更改即可，只会在Editor模式下有用
		ResourceManager.Instance.LoadFromBundle = LoadFromBundle;
		//ResourceManager.Instance.ChangeAssetPath (Path.Combine("../BundleOutput",UnityEditor.EditorUserBuildSettings.activeBuildTarget.ToString()));
		//ResourceManager.Instance.ChangeStreamingDataPath ("Assets/StreamingAssets");
		//ResourceManager.Instance.ChangeStreamingDataPath (Path.Combine("../BundleOutput",UnityEditor.EditorUserBuildSettings.activeBuildTarget.ToString()));
		#endif

		if (needUpdate) {
			//进行热更,热更完毕后，才开始游戏
			ResourceUpdater.Instance.UpdateResource(ShowUpdateProgress);
		} else {
			BeginGame ();
		}
	}

	private void ShowUpdateProgress(float progress){
		if (progress >= 100) {
			BeginGame ();
		}
	}

	private void BeginGame(){
		//开启游戏逻辑，这里只是测试用的代码，把GameLogic增加到场景就好
		//实际上这一步可能需要做很多游戏逻辑开始前的初始化工作
		GameLogic.Begin ();
	}
}
